![Maven Central Adds Sigstore Signature Validation](https://cdn.sanity.io/images/cgdhsj6q/production/7da3bc8a946cfb5df15d7fcf49767faedc72b483-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
mysql-await
Advanced tools
Simple wrapper for MySQL async/await functionality. Intended for functionality to mimic the popular mysql Node.js callback-based package, but with additional methods for awaiting execution. Goal is for normal methods to be unaffected and only additional await methods added, though accomplished through intermediary class objects.
npm i mysql-await
The methods below have been added as async/await wrappers to existing MySQL methods of similar name. In order to use them, simply "await" their execution rather than passing a callback for the last argument of the function call. For original methods for which "await" methods may have been added, as needed, see the mysql library.
{
"connectionLimit" : 10,
"host" : "example.org",
"user" : "bob",
"password" : "secret",
"database" : "my_db",
"throwErrors" : false
}
Note: throwErrors
is used to determine whether MySQL errors should be thrown AND emitted, or only emitted
const fs = require(`fs`);
const mysql = require(`mysql-await`);
/** Self-executing asynchronous function so we can await results in this example */
(async () => {
/** Create connection pool using loaded config */
const connection = mysql.createConnection(JSON.parse(fs.readFileSync(`mysql-config.json`)));
connection.on(`error`, (err) => {
console.error(`Connection error ${err.code}`);
});
/** Perform query on connection */
let result = await connection.awaitQuery(`SELECT * FROM people WHERE lastName = ?`, [`Doe`]);
/** Log output */
console.log(result);
/** Begin a new transaction */
await connection.awaitBeginTransaction();
/** Perform query for max id number in users table */
result = await connection.awaitQuery(`SELECT MAX(id) maxId FROM people`);
/** Add one to max id to get new id number */
const newId = result[0].maxId + 1;
/** Insert new test user with new id number */
await connection.awaitQuery(`INSERT INTO people (id, firstName, lastName, age) VALUES (?, ?, ?, ?)`, [newId, `Ebenezer`, `Scrooge`, 142]);
/** Commit transaction */
await connection.awaitCommit();
/** End the connection */
connection.awaitEnd();
})();
[
RowDataPacket { id: 3, firstName: 'Jane', lastName: 'Doe', age: 45 }
]
const fs = require(`fs`);
const mysql = require(`mysql-await`);
/** Self-executing asynchronous function so we can await results in this example */
(async () => {
/** Create connection pool using loaded config */
const pool = mysql.createPool(JSON.parse(fs.readFileSync(`mysql-config.json`)));
pool.on(`acquire`, (connection) => {
console.log(`Connection %d acquired`, connection.threadId);
});
pool.on(`connection`, (connection) => {
console.log(`Connection %d connected`, connection.threadId);
});
pool.on(`enqueue`, () => {
console.log(`Waiting for available connection slot`);
});
pool.on(`release`, function (connection) {
console.log(`Connection %d released`, connection.threadId);
});
const connection = await pool.awaitGetConnection();
connection.on(`error`, (err) => {
console.error(`Connection error ${err.code}`);
});
/** Perform query on connection */
let result = await connection.awaitQuery(`SELECT * FROM people WHERE lastName = ?`, [`Smith`]);
/** Log output */
console.log(result);
/** Release connection */
connection.release();
/** Perform query on pool (opens a connection, runs query, releases connection) */
result = await pool.awaitQuery(`SELECT * FROM people WHERE age = ?`, [45]);
/** Log output */
console.log(result);
/** Get a new connection from the pool */
const connection2 = await pool.awaitGetConnection();
/** Begin a new transaction */
await connection2.awaitBeginTransaction();
/** Perform query for max id number in users table */
result = await connection2.awaitQuery(`SELECT MAX(id) maxId FROM people`);
/** Add one to max id to get new id number */
const newId = result[0].maxId + 1;
/** Insert new test user with new id number */
await connection2.awaitQuery(`INSERT INTO people (id, firstName, lastName, age) VALUES (?, ?, ?, ?)`, [newId, `Jacob`, `Marley`, 147]);
/** Commit transaction */
await connection2.awaitCommit();
/** Release connection */
connection2.release();
/** Close connection pool */
await pool.awaitEnd();
})();
Connection 16 connected
Connection 16 acquired
[
RowDataPacket {
id: 2,
firstName: 'John',
lastName: 'Smith',
age: 37
}
]
Connection 16 released
Connection 16 acquired
Connection 16 released
[
RowDataPacket { id: 3, firstName: 'Jane', lastName: 'Doe', age: 45 }
]
Connection 16 acquired
Connection 16 released
Please open an issue for any bugs found or feature requests
MIT
FAQs
Backward Compatible MySQL Async/Await Connection Wrapper
We found that mysql-await demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.